第8章 Webサーバの運用とメトリクスモニタリング
nginxのステータスモニタリング
stub_statusディレクティブでnginxの統計情報をHTTPで取得できる。
アクセスログの記録
Fluentedによるログ収集
Fluentedで複数台のサーバからログを収集し集計と可視化を行うことができる。
イベントごとにタグを付与することで出力先にルーティングすることができる。
Fluented、Norikra、GrowthForecastによるメトリクスモニタリング
ログファイルのローテーション
ログを書き込むファイルを定期的に切り替えて一定期間で削除を行うログローテーションが必要になる。
一般的なLinuxディストリビューションではlogrotateで設定できる。
無停止でのアップグレード
ロードバランサ、DNSを利用したローリングアップグレード
HTTPサーバの前段にロードバランサを設置し、サーバを一台ずつロードバランサから切り離し、アップグレード終了後に再びロードバランサに戻す方法。
アップグレード中は一台ずつなので処理できるリクエスト量は低下するがどのようなHTTPサーバでも利用可能である。
サーバが単一障害点だったりnginxがロードバランサとして昨日している場合はDNSに複数のアドレスを登録しておくことでアップデートできるがDNSレコードの更新の反映にはTTLが切れるのを待つ必要があり時間がかかり、通常よりもより多くのサーバが必要。
シグナルによるオンザフライアップデート
まず新しいバイナリを使用してnginxのプロセス群が起動。
古いワーカープロセスを終了させる。
古いマスタプロセスを終了して新しいnginxのプロセス群だけになればアップグレード完了
アップグレード後に問題があった場合、切り戻し方法としては古いnginxのマスタプロセスにHUPシグナルを送って古いワーカーを起動する方法と新しいnginxのマスタプロセスをTERMシグナルで終了させる方法がある。